/*
 * RankServer.h
 *
 *  Created on: 2013-2-5
 *      Author: tangwu
 */

#ifndef RANKSERVER_H_
#define RANKSERVER_H_
#include <arpa/inet.h>
#include "Rank.h"

class RankServer {
public:
	/*
	 * @param addr是ip地址
	 * @param port是监听的端口
	 * @param rankType是rank的类型，目前可取值
	 *  只有"TreeArray"
	 * @param _max_score是最大的分数
	 * @param _n 是人数
	 */
	RankServer(const char* addr, uint16_t port, string rankType, int _max_score, int _n);
	virtual ~RankServer();
	/*
	 * @brief 开始监听
	 */
	void listen();

	/*
	 * @brief 处理接收缓冲区的数据
	 * 支持以下三种数据格式
	 * # update 3 4
	 * # query 5
	 * # exit
	 */
	void handle(char* buff, int len);
protected:
	sockaddr_in addr;
	int sock_fd;
	Rank* rank;
	int backlog;
};

#endif /* RANKSERVER_H_ */
